package org.fatewa.engine.design.genius;


/**
 * 通用投影器，此类可在上下文中自动注入 spring 依赖，进行投影映射
 *
 * @param <E> 实体类型
 * @param <T> 目标类型
 * @author fatewa
 */
public interface GenericProjector<E, T> {

    /**
     * 指定投影器名称，在单个实体要求唯一
     *
     * @return 投影器名称
     */
    String name();

    /**
     * 将 {@link E} 转换为 {@link T} 的具体实现
     *
     * @param entity 当前类型
     * @return 目标类型
     */
    T map(E entity);
}
